home *** CD-ROM | disk | FTP | other *** search
- 1 GOTO10
- 2 SAVE"SON",8:OPEN15,8,15:INPUT#15,A$,B$,C$,D$:CLOSE15
- 3 PRINT A$,B$,C$,D$:END
- 5 OPEN15,8,15:PRINT#15,"S0:PA":INPUT#15,A$,B$,C$,D$:PRINT A$;B$;C$;D$
- 6 PRINT#15,"R0:PA=SON":INPUT#15,A$,B$,C$,D$:PRINT"R0:PA=SON",A$;B$;C$;D$:CLOSE15
- 7 SAVE"SON",8:OPEN15,8,15:INPUT#15,A$,B$,C$,D$:PRINTA$;B$;C$;D$:CLOSE15:END
- 10 REM " *** ***
- 11 [143] " *** CHR$ALACTIC VALMPIRE ! ***
- 12 REM " *** ***
- 13 [143] " *** BY (null)AUL (null)ELLAM ***
- 14 REM " *** 105 [212]UTELA [200]EIGHTS [210]OAD ***
- 15 [143] " *** PEEKRANTFORD, (null)NTARIO ***
- 16 REM " *** [206]3[212] 1[193]4 ***
- 17 [143] " *** ***
- 18 REM " *** [195]REDITS : ***
- 19 [143] " *** - VALNTERPRISE SPRITES BY ??? ***
- 20 REM " *** (FROM [212][208][213][199] DISK [196]4) ***
- 21 [143] " *** - RIGHT$DEA FROM A SIMILAR ATN(null)(null)(null)VAL ***
- 22 REM " *** GAME BY ***
- 23 [143] " *** (null)RSINE VALNGINEERING & ***
- 24 REM " *** [208]OWERSOFT [201]NC. ***
- 25 [143] " *** ***
- 95 REM" --- [204]INES 40000-40010 FOR COLOURS ---
- 96 [143]"
- 100 S=54272:FOR A=S TO S+24:POKE A,0:NEXT:V=53248:POKE V+21,0
- 110 DIM WL$(40),WL%(40),LF%(10),HF%(10),DO$(20)
- 120 FOR A=1 TO 20:WL$(A)=CHR$(64+A):WL%(A)=A:NEXT
- 130 FOR A=21 TO 40:WL$(A)=CHR$(172+A):WL%(A)=44+A:NEXT
- 140 FOR A=0 TO 10:READ PC%(A),PC$(A):NEXT
- 150 POKE 53280,6:POKE 53281,15:PRINTCHR$(8)"[147]"
- 160 REM OPEN 2,8,2,"GE.ENTERPRISE.C,S,R"
- 170 REM FOR N=0 TO 62:INPUT#2,Q:POKE704+N,Q:NEXT
- 180 REM FOR N=0 TO 191:INPUT#2,Q:POKE832+N,Q:NEXT
- 190 CLOSE2
- 200 FOR A=0 TO 10:READ LF%(A),HF%(A):NEXT
- 210 DO$(0)="":FOR A=1 TO 20:DO$(A)=DO$(A-1)+"":NEXT
- 220 DEFFNDS(A)=SQR((WX%(P)-WX%(A))^2+(WY%(P)-WY%(A))^2)
- 230 D1$=PC$(0)+""
- 240 D2$=D1$+"":D3$=D2$+""
- 250 PN$(0)="[205]E !"
- 990 GOTO 20000
- 1000 REM $$$ $$$
- 1001 REM $$$ SOUNDS $$$
- 1002 REM $$$ $$$
- 1100 REM *** ***
- 1101 REM *** ATTACKER'S FIRE ***
- 1102 REM *** ***
- 1110 POKE S+5, 9:POKE S+6,20 :POKE S+24,15:POKE S+1,3 :POKE S,200
- 1120 POKE S+4,33:FOR TM=1 TO 1 :NEXT:POKE S+4,0
- 1130 RETURN
- 1200 REM *** ***
- 1201 REM *** DEFENDER'S FIRE ***
- 1202 REM *** ***
- 1210 POKE S+5, 9:POKE S+6,20 :POKE S+24,10:POKE S+1,10:POKE S,200
- 1215 POKE S+2,16:POKE S+3,4
- 1220 POKE S+4,33:FOR TM=1 TO 1 :NEXT:POKE S+4,0
- 1230 RETURN
- 1300 REM *** ***
- 1301 REM *** EXPLOSION OF HIT ***
- 1302 REM *** ***
- 1310 POKE S+5,9:POKE S+6,0:POKE S+24,10:POKE S+1,40:POKE S,200
- 1320 POKE S+4,129:FOR TM=1 TO 1 :NEXT:POKE S+4,0
- 1330 RETURN
- 1600 REM *** ***
- 1601 REM *** INPUT MISTAKE ***
- 1602 REM *** ***
- 1610 POKE S+5,41:POKE S+6,249:POKE S+24,10:POKE S+1,15:POKE S,200
- 1615 FOR NT=1 TO 2
- 1620 FOR LP=1 TO 40 STEP 2:POKE S+4,33:POKES+4,32
- 1625 IF LP<21 THEN POKE S+1,15+LP:GOTO 1627
- 1626 POKE S+1,55-LP
- 1627 NEXT:POKE S+1,20:NEXT:POKES+4,0
- 1630 RETURN
- 1700 REM *** ***
- 1701 REM *** BATTLE STATIONS ***
- 1702 REM *** ***
- 1710 POKE S+5,41:POKE S+6,249:POKE S+24,12:POKE S+1,20:POKE S,200
- 1715 FOR NT=1 TO 4
- 1720 FOR LP=1 TO 40:POKE S+4,33
- 1725 POKE S+1,20+LP
- 1730 NEXT:POKE S+1,20:NEXT:POKE S+4,0
- 1740 RETURN
- 1800 REM *** ***
- 1801 REM *** TELETYPE (1 PING) ***
- 1802 REM *** ***
- 1810 POKE S+5,21:POKE S+6,0:POKE S+24,15:POKE S+1,7 :POKE S,50
- 1811 POKE S+12,21:POKE S+13,0:POKE S+8,100:POKE S+7,50
- 1815 POKE S+2,0:POKE S+3,15
- 1820 POKE S+4,65:POKE S+11,129:FOR TM=1 TO 1 :NEXT:POKE S+4,0:POKE S+11,0:RETURN
- 2000 REM *** ***
- 2001 REM *** WORLD CHARACTER INPUT ***
- 2002 REM *** ***
- 2010 WAIT 198,1:GET IN$
- 2020 IF IN$="?" OR IN$=CHR$(13) OR IN$="*" THEN RETURN
- 2030 IF ASC(IN$)>64 AND ASC(IN$)<85 THEN U=ASC(IN$)-64:RETURN
- 2040 IF ASC(IN$)>192 AND ASC(IN$)<213 THEN U=ASC(IN$)-172:RETURN
- 2050 U=-1:RETURN
- 2100 REM *** ***
- 2101 REM *** NUMERICAL INPUT ***
- 2102 REM *** ***
- 2110 U=0
- 2120 GET IN$:IF IN$=""THEN 2120
- 2130 IF IN$="?" OR IN$=CHR$(13) THEN RETURN
- 2140 IF ASC(IN$)>47 AND ASC(IN$)<58 THEN U=10*U+ASC(IN$)-48:V=-1:GOTO 2120
- 2160 U=-1:RETURN
- 3000 REM *** ***
- 3001 REM *** PLAYER'S INPUT ***
- 3002 REM *** ***
- 3030 W=1
- 3040 IF WC%(W)=P THEN 3100
- 3050 W=W+1:IF W<=WN THEN 3040
- 3060 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)D2$"CONTROLS NO WORLDS"
- 3070 GOSUB 1600:FOR TM=1 TO 1 :NEXT:GOSUB 30950:RETURN
- 3100 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"D2$"[207]RIGIN OF FLEET ?"
- 3110 GOSUB 2000
- 3120 IF IN$="?" THEN GOSUB 9000:GOTO 3000
- 3125 IF IN$="*" THEN GOSUB 8000:GOTO 3000
- 3130 IF IN$=CHR$(13) THEN GOSUB 30950:RETURN
- 3135 IF U<0 THEN 3215
- 3140 IF WC%(U)=P THEN 3180
- 3160 PRINTD3$"[212]HAT'S NOT YOURS!":GOSUB 1600:GOSUB 30950:GOTO 3100
- 3180 WR=U:PRINTD2$"[196]ESTINATION ? "
- 3190 GOSUB 2000
- 3200 IF IN$="?" THEN GOSUB 9000:GOTO 3000
- 3210 IF IN$=CHR$(13) THEN GOSUB 30950:GOTO 3100
- 3215 IF U<0 THEN PRINTD3$"[201]NVALID [193]NSWER!":GOSUB 1600:GOSUB 30950:GOTO 3100
- 3220 WD=U:V=0:PRINTD2$"# OF SHIPS ? "
- 3230 GOSUB 2100
- 3240 IF IN$="?" THEN GOSUB 9000:GOTO 3000
- 3250 IF U<0 THEN 3215
- 3255 IF V=0 AND IN$=CHR$(13)THEN U=WS%(WR):GOTO 3270
- 3260 IF U=0 THEN 3215
- 3265 IF U>WS%(WR) THEN PRINTD3$"[206]OT ENOUGH THERE!":GOSUB 1600:GOSUB 30950:GOTO 3100
- 3270 GOSUB 30950:FM=U:GOSUB 4000
- 3280 IF F<=100 THEN 3100
- 3999 RETURN
- 4000 REM *** ***
- 4001 REM *** TRANSFER SHIPS FROM ***
- 4002 REM *** WORLD TO FLEET ***
- 4003 REM *** ***
- 4010 F=1
- 4020 IF FC%(F)<>0 THEN 4050
- 4030 WS%(WR)=WS%(WR)-FM:FC%(F)=P:FD%(F)=WD:FS%(F)=FM
- 4040 Z=P:P=WR:FT%(F)=T+(FNDS(WD)+.99)/3:P=Z:RETURN
- 4050 F=F+1:IF F<=100 THEN 4020
- 4060 PRINTD1$"[215]ORKER'S STRIKE"D2$"HALTS ALL FLEET"D3$"LAUNCHES !":GOSUB 1600
- 4070 GOSUB 30950:P%(0)=PN:RETURN
- 5000 REM *** ***
- 5001 REM *** ARRIVAL OF FLEET ***
- 5002 REM *** ***
- 5010 W=FD%(F):DE=WS%(W):AK=FS%(F)
- 5012 PS=983+40*WY%(W)+WX%(W)
- 5014 FOR I=1 TO 10
- 5016 POKE PS,PEEK(PS)+128
- 5018 POKE PS,PEEK(PS)-128
- 5019 NEXT
- 5020 IF FC%(F)=WC%(W) THEN 5400
- 5100 REM *** ***
- 5101 REM *** ATTACK ***
- 5102 REM *** ***
- 5110 PRINTD1$;"[193]TTACK ON WORLD ";WL$(W);"!"
- 5120 PRINTD2$;:CC$="[196]EFENDER:":GOSUB 5900:PRINTPC$(WC%(W));:CC$=PN$(WC%(W))
- 5125 GOSUB 5900
- 5130 PRINTD3$;:CC$="[193]TTACKER:":GOSUB 5900:PRINTPC$(FC%(F));:CC$=PN$(FC%(F))
- 5135 GOSUB 5900:GOSUB 1700
- 5140 PRINTD2$"S: ";:W2=W:GOSUB 30910:PRINT" "
- 5150 PRINTD3$"S: ";:W2=0:WS%(W2)=AK:GOSUB 30910:PRINT" "
- 5155 IF DE=0 THEN GOSUB 5700:GOTO 5300
- 5160 I=0:X=1:REM DEFENDER FIRES
- 5170 I=I+1:X=X+1:IF X=20 THEN GOSUB 1200:X=1
- 5180 IF RND(0)>G1*AK/(AK+DE)+G2 THEN 5200
- 5190 GOSUB 1300:AK=AK-1:PRINTD3$"";:W2=0:WS%(0)=AK:GOSUB 30910
- 5200 IF AK=0 THEN GOSUB 5800:GOTO 5300
- 5210 IF I<DE THEN 5170
- 5220 I=0:X=1:REM ATTACKER FIRES
- 5230 I=I+1:X=X+1:IF X=20 THEN GOSUB 1100:X=1
- 5240 IF RND(0)>G1*DE/(AK+DE)+G2 THEN 5260
- 5250 GOSUB 1300:DE=DE-1:PRINTD2$"";:W2=0:WS%(0)=DE:GOSUB 30910
- 5260 IF DE=0 THEN GOSUB 5600:GOTO 5300
- 5270 IF I<AK THEN 5230
- 5280 GOTO 5160
- 5300 FC%(F)=0:GOSUB 30950:RETURN
- 5400 REM *** ***
- 5401 REM *** REINFORCEMENTS ***
- 5402 REM *** ***
- 5410 PRINTD1$;:CC$="[215]ORLD "+WL$(W)+":":PRINT CC$:REM GOSUB 5900
- 5420 CC$=MID$(STR$(AK),2)+" REINFORCEMENT":IF AK>1 THEN CC$=CC$+"S"
- 5425 PRINTD2$;:PRINT CC$:REM GOSUB 5900
- 5430 CC$="HAVE ":IF AK=1 THEN CC$="HAS "
- 5435 PRINTD3$;CC$;:CC$="ARRIVED":GOSUB 5900
- 5440 WS%(W)=DE+AK:W2=W:PRINTDO$(W-20*INT(W/21))SPC(25+10*INT(W/21));:GOSUB 30910
- 5450 GOTO 5300
- 5600 REM *** ***
- 5601 REM *** OUTCOME MESSAGES ***
- 5602 REM *** ***
- 5610 GOSUB 30950
- 5620 PRINTD1$;:CC$="[212]HE ATTACKERS WON!":GOSUB 5900
- 5630 WC%(W)=FC%(F):WS%(W)=AK:POKE 55255+40*WY%(W)+WX%(W),PC%(WC%(W))
- 5640 PRINTDO$(W-20*INT(W/21))SPC(21+10*INT(W/21))PC$(WC%(W))WL$(W)PC$(0);
- 5650 W2=W:GOSUB 30900:RETURN
- 5700 GOSUB 30950
- 5710 PRINTD1$;:CC$="[212]HE ATTACKERS WON":GOSUB 5900:PRINTD2$;
- 5720 CC$="WITHOUT A FIGHT !":GOSUB 5900:GOTO 5630
- 5800 GOSUB 30950
- 5810 PRINTD1$;:CC$="[212]HE DEFENDERS":GOSUB 5900:PRINTD2$;:CC$="SURVIVED THE":GOSUB 5900
- 5820 PRINTD3$;:CC$="ATTACK!":GOSUB 5900:WS%(W)=DE:IF WC%(W)<>0 THEN GOTO 5640
- 5830 RETURN
- 5900 REM *** ***
- 5901 REM *** TAP OUT MESSAGE ***
- 5902 REM *** ***
- 5910 FOR LP=1 TO LEN(CC$)
- 5915 PRINTMID$(CC$,LP,1);:GOSUB 1800
- 5920 NEXT:RETURN
- 6000 REM *** ***
- 6001 REM *** BUILD SHIPS ***
- 6002 REM *** ***
- 6010 FOR W2=1 TO WN
- 6020 IF AB=0 AND WC%(W2)=0 THEN 6100
- 6030 WS%(W2)=WS%(W2)+WI%(W2)
- 6040 IFWC%(W2)>0THENPRINTDO$(W2-20*INT(W2/21))SPC(25+10*INT(W2/21))PC$(0);:GOSUB30910
- 6100 NEXT W2:RETURN
- 7000 REM *** ***
- 7001 REM *** MOVE FLEETS ***
- 7002 REM *** ***
- 7010 FOR F=1 TO 100
- 7020 IF FC%(F)=0 THEN 7040
- 7030 IF FT%(F)<T THEN GOSUB 5000
- 7040 NEXT F:RETURN
- 8000 REM *** ***
- 8001 REM ***'STANDING ORDER'OPTIONS ***
- 8002 REM *** ***
- 8010 PRINTPC$(3)"[147] ' [211][212][193][206][196][201][206][199][160][207][210][196][197][210] ' OPTIONS"
- 8020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
- 8030 PRINTPC$(1)" A[157]C[157]G[157]M[157]R"
- 8040 PRINTPC$(0)TAB(6)"- [193]DD '[211]TANDING [207]RDERS' "
- 8050 PRINTPC$(0)TAB(6)"- [195]ANCEL ALL '[211]TANDING [207]RDERS' "
- 8060 PRINTTAB(6)"- [199]O BACK TO PLAYING THE GAME"
- 8070 PRINTTAB(6)"- [205]ODIFY ONE '[211]TANDING [207]RDER' "
- 8080 PRINTTAB(6)"- [210]EVIEW ALL '[211]TANDING [207]RDERS' "
- 8090 PRINTPC$(3)" [215]HICH OPTION DO YOU WANT ?"
- 8095 SC=P:WAIT 198,1:GET IN$
- 8100 IF IN$="A" THEN GOSUB 8300:GOTO8000
- 8110 IF IN$="C" THEN GOSUB 8600:GOTO 8095
- 8120 IF IN$="G" THEN GOSUB 30000:RETURN
- 8130 IF IN$="M" THEN GOSUB 8400:GOTO 8000
- 8140 IF IN$="R" THEN GOSUB 8200:GOTO 8000
- 8150 IF IN$=CHR$(13) THEN GOSUB 30000:RETURN
- 8160 GOSUB 1600:GOTO 8000
- 8200 PRINTPC3$"[147][207]RDER # [198]ROM [212]O # OF SHIPS"
- 8210 FORI=1 TO 20:S1$="@":S2$="@"
- 8220 IF SO(P,I,1)<21 THEN S1$=CHR$(SO(P,I,1)+64):GOTO 8230
- 8225 IF SO(P,I,1)>20 THEN S1$=CHR$(SO(P,I,1)+76)
- 8230 IF SO(P,I,2)<21 THEN S2$=CHR$(SO(P,I,2)+64):GOTO 8240
- 8235 IF SO(P,I,2)>20 THEN S2$=CHR$(SO(P,I,2)+76)
- 8240 IF S1$="@" THEN S1$=" ":S2$=" "
- 8250 PRINT I,S1$,S2$,SO(P,I,3):NEXT I
- 8270 PRINT "[208]RESS ANY KEY TO CONTINUE"
- 8280 WAIT 198,1:POKE 198,0:RETURN
- 8300 GOSUB30000
- 8310 GOSUB30950:PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"
- 8320 U=0:FOR X=1 TO 20:IF SO(P,X,3)<>0 THEN NEXT X:GOTO 8325
- 8322 GOTO8328
- 8325 PRINTD2$;:CC$="20 [211]TANDING [207]RDERS":GOSUB 1600:GOSUB 5900:RETURN
- 8328 S3$=CHR$(X+48):IF X>9 THEN I=X-10:S3$="1"+CHR$(I+48):IF X=20 THEN S3$="20"
- 8330 PRINTD2$;:CC$="#"+S3$+" [211]TANDING [207]RDER":GOSUB 5900
- 8340 FOR I=1TO3:SO(P,X,I)=0:NEXT I:GOSUB 30950
- 8360 GOSUB 8800:IF U<0 THEN RETURN
- 8380 SO(P,X,1)=SR:SO(P,X,2)=SD:SO(P,X,3)=SN
- 8390 SR=0:SD=0:U=0:SN=0:GOTO 8310
- 8400 GOSUB30000
- 8405 GOSUB30950:PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"
- 8410 PRINTD2$;"[211]TANDING [207]RDER #?":X=0
- 8420 GOSUB 2100:IF U<0 THEN 8405
- 8430 IF U=0 THEN GOSUB 30950:RETURN
- 8440 X=U:IF X<=20 THEN GOTO 8460
- 8450 PRINTD3$"[201]NVALID ANSWER!":GOSUB 1600:GOTO 8405
- 8460 FOR I=1TO3:SO(P,X,I)=0:NEXT I
- 8470 GOSUB 8800:IF X=-1 THEN GOTO 8405
- 8480 SO(P,X,1)=SR:SO(P,X,2)=SD:SO(P,X,3)=SN
- 8490 SR=0:SD=0:U=0:SN=0:GOTO 8405
- 8500 REM EXECUTE SUBROUTINE
- 8510 FORI=1 TO 20:S3$="":IF SO(P,I,1)=0 THEN GOTO8560
- 8520 WR=SO(P,I,1):WD=SO(P,I,2):FM=SO(P,I,3)
- 8525 IF WS%(WR)=>FM AND WC%(WR)=P THEN GOTO 8550
- 8530 GOSUB30950:PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"
- 8535 S3$=CHR$(I+48):IF I>9 THEN X=I-10:S3$="1"+CHR$(X+48)
- 8538 IF I=20 THEN S3$="20"
- 8540 PRINTD2$;:CC$="[194]AD [207]RDER #"+S3$:GOSUB 5900 : GOTO 8560
- 8550 GOSUB 4000
- 8560 NEXT I
- 8590 RETURN
- 8600 REM CANCEL ALL S. O.'S
- 8610 FOR X=1 TO 20
- 8620 FOR I=1TO3:SO(P,X,I)=0:NEXT I
- 8630 NEXT X:PRINT "[193]LL [211]TANDING [207]RDERS [197]RASED! ":GOSUB 1800:GOSUB 1800:RETURN
- 8800 PRINTD1$"[193]DMIRAL "PC$(P)PN$(P)PC$(0)":"D2$"[207]RIGIN OF FLEET ?"
- 8810 GOSUB 2000
- 8812 IF IN$=CHR$(13) THEN GOSUB 30950:U=-1:RETURN
- 8815 IFU<0THENPRINTD3$"[201]NVALID [193]NSWER!":GOSUB1600:GOSUB30950:SR=0:SD=0:GOTO8800
- 8830 IF WC%(U)=P THEN 8850
- 8840 PRINTD3$"[212]HAT'S NOT YOURS!":GOSUB 1600:GOSUB 30950:GOTO 8800
- 8850 SR=U:PRINTD2$"[196]ESTINATION ? "
- 8860 GOSUB 2000
- 8870 IF IN$=CHR$(13) THEN U=-1:RETURN
- 8880 SD=U:V=0:PRINTD2$"# OF SHIPS ? "
- 8890 GOSUB 2100
- 8900 IF U<0 THEN 8815
- 8910 IF V=0 AND IN$=CHR$(13)THEN U=WI%(SR):GOTO 8930
- 8920 IFU>WS%(SR)THENPRINTD3$"[206]OT ENOUGH THERE!":GOSUB 1600:GOSUB 30950:GOTO 8800
- 8925 IF U=0 THEN 8815
- 8930 GOSUB 30950:SN=U
- 8940 RETURN
- 8950 U=-1:RETURN
- 9000 REM *** ***
- 9001 REM *** HELP & UTILITY OPTIONS ***
- 9002 REM *** ***
- 9010 PRINTPC$(3)"[147] [200]ELP / [213]TILITY OPTIONS"
- 9020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
- 9030 PRINTPC$(1)" C[157]E[157]G[157]Q[157]R"
- 9040 PRINTPC$(0)TAB(6)"- [195]HANGE THE # OF TURNS"
- 9050 PRINTTAB(6)"- [197]ND THE GAME (FOR EVERYONE)"
- 9060 PRINTTAB(6)"- [199]O BACK TO PLAYING THE GAME"
- 9070 PRINTTAB(6)"- [209]UIT THE GAME (1 PERSON)"
- 9080 PRINTTAB(6)"- [210]EVIEW THE INSTRUCTIONS"
- 9090 PRINTPC$(3)" [215]HICH OPTION DO YOU WANT ?"
- 9095 WAIT 198,1:GET IN$
- 9100 IF IN$="E" THEN GOSUB 10000:END
- 9110 IF IN$="R" THEN GOSUB 27000:GOTO 9000
- 9120 IF IN$="Q" THEN GOSUB 9200
- 9130 IF IN$="G" THEN GOSUB 30000:RETURN
- 9140 IF IN$="C" THEN GOSUB 9300:GOTO 9000
- 9145 IF IN$=CHR$(13) THEN GOSUB 30000:RETURN
- 9150 GOSUB 1600:GOTO 9000
- 9200 GOSUB 10000:END:REMOVED BAD CODE!!
- 9300 PRINTPC$(0)"[147][201]T IS NOW YEAR"T
- 9310 PRINT"[212]HERE WERE TO HAVE BEEN"TN" YEARS IN":PRINT"TOTAL."
- 9320 PRINTPC$(3)"[200]OW MANY YEARS DO YOU WANT NOW"
- 9330 PRINT"("MID$(STR$(T+1),2)"-100) 99[157][157][157][157]";:INPUT TT
- 9340 IF TT<T+1 OR TT>100 THEN GOSUB 1600:GOTO 9300
- 9350 TN=TT:RETURN
- 9999 RETURN
- 10000 REM *** ***
- 10001 REM *** END OF GAME ***
- 10002 REM *** ***
- 10010 PRINTPC$(3)"[147] [198]INAL STATISTICS :"
- 10020 PRINT" [162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162]"
- 10025 PRINTPC$(0)"[193]DMIRAL [201]NDUSTRY # OF [215]ORLDS # OF [211]HIPS"
- 10026 PRINT"[162][162][162][162][162][162][162] [162][162][162][162][162][162][162] [162][162][162][162][162][162][162][162][162][162][162] [162][162][162][162][162][162][162][162][162][162]"
- 10030 N=0:N2=0:FORP=1TO PN:U=0:S=0:V=0
- 10040 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1:S=S+WS%(W):V=V+WI%(W)
- 10050 NEXT W
- 10060 FOR F=1 TO 100:IF FC%(F)=P THEN S=S+FS%(F)
- 10070 NEXT F
- 10080 PRINTPC$(P);PN$(P);TAB(10);PC$(0);V;TAB(20);U;TAB(30);S
- 10090 IF U>N THEN N=U:N2=0
- 10100 IF U=N THEN N2=N2+1
- 10110 NEXT P
- 10120 IF PN=1 THEN 10400
- 10130 N3=0:PRINT"";:IF N2>1 THEN PRINTPC$(3)"[212]HERE IS A"N2"-WAY TIE!"
- 10140 PRINTPC$(0)"[195]ONGRATULATIONS TO [193]DMIRAL";:IF N2>1 THEN PRINT"S";
- 10150 FOR P=1 TO PN:U=0
- 10160 FOR W=1 TO WN:IF WC%(W)=P THEN U=U+1
- 10170 NEXTW
- 10180 IFU=NTHENPRINTTAB(28)PC$(P)PN$(P);:N3=N3+1:IFN3>1 THEN PRINTTAB(24)PC$(0)"AND";
- 10190 IF U=N THEN PRINT
- 10195 NEXT P
- 10196 PRINTPC$(3)"VIEW MAP (Y/N) ?"
- 10197 WAIT 198,1:GET IN$
- 10198 IF IN$="Y" THEN GOSUB 30000
- 10199 IF IN$<>"N" THEN GOSUB 1600:GOTO 10196
- 10200 PRINTPC$(3)"[193]NOTHER GAME (Y/N) ?"
- 10210 WAIT 198,1:GET IN$
- 10220 IF IN$="Y" THEN PRINT"[147]":CLR:RUN
- 10230 IF IN$<>"N" THEN GOSUB 1600:GOTO 10210
- 10240 PRINT"[147][199]OOD-BYE !"CHR$(9):RETURN
- 10400 IF U=WN THEN PRINT"[195]ONGRATULATIONS! [217]OU HAVE SUCCEEDED!":GOTO 10196
- 10410 PRINT"[201]'M GLAD YOU LOST...YOU DESERVED IT!":GOTO 10196
- 10999 RETURN
- 20000 REM *** ***
- 20001 REM *** MAIN PROGRAM ***
- 20002 REM *** ***
- 20010 REM GOSUB 21000
- 20015 GOSUB 22000
- 20020 PRINTCHR$(14)PC$(3)"[147][196]O YOU WANT TO SEE THE RULES (Y/N) ?"
- 20030 WAIT 198,1:GET IN$
- 20040 IF IN$="Y" THEN 20120
- 20050 IF IN$="N" THEN 20130
- 20060 GOSUB 1600:GOTO 20030
- 20120 GOSUB 27000
- 20130 GOSUB 28000
- 20140 GOSUB 29000
- 20150 GOSUB 31000:GOSUB 33000:GOSUB 34000
- 20180 T=0:GOSUB 30000
- 20190 PRINTD1$"[215]OULD YOU LIKE A"
- 20200 PRINTD2$"DIFFERENT MAP ?"
- 20210 WAIT 198,1:GET IN$
- 20220 IF IN$="Y" THEN GOSUB 30950:PRINTD1$"[208]LEASE WAIT...":GOTO 20140
- 20230 IF IN$<>"N" THEN GOSUB 1600:GOTO 20210
- 20240 GOSUB 30950
- 20250 REM *** ***
- 20251 REM *** BEGINNING OF GAME ***
- 20252 REM *** ***
- 20260 T=0
- 20265 FOR P=0 TO PN:P%(P)=0:NEXT
- 20270 P=INT(PN*RND(0)+1):IF P%(P)=1 THEN 20270
- 20275 P%(P)=1:P%(0)=P%(0)+1
- 20280 GOSUB 3000:GOSUB 8500
- 20290 IF P%(0)<PN THEN 20270
- 20295 REM GOSUB 8500
- 20300 T=T+1:PRINTD3$""T"":GOSUB 6000
- 20310 GOSUB 7000
- 20320 FOR W=1 TO WN:W2%(W)=WS%(W):NEXT
- 20340 IF T<TN THEN 20265
- 20350 GOSUB 10000
- 20360 END
- 21000 REM *** ***
- 21001 REM *** INTRODUCTION ***
- 21002 REM *** ***
- 21010 PRINTCHR$(142)PC$(0)"[147] WELCOME TO THE GAME OF"
- 21020 PRINTPC$(9)" [169] [223][169] [223] [169] [223][169] [223] [169] [223]"
- 21030 PRINT" [162] [162] [162]"
- 21040 PRINT" "
- 21050 PRINT" [162] [146][162] [146][162]"
- 21060 PRINT" [223] [146][169] [146] [223] [146][169] [146][223] [146][169]"
- 21070 PRINT" [223][146] [169] [223] [223] "
- 21080 PRINT" [146][223] [146][169] "
- 21090 PRINT" [146][169] [146][169] "
- 21100 PRINT" [146][223][223] "
- 21110 PRINT" [146][223][223] "
- 21111 PRINTPC$(3)" BY PAUL KELLAM - REDONE BY THE GOPHER!!"
- 21114 POKE S+12,96:POKE S+13,0
- 21115 POKE S+5,9:POKE S+6,0:POKE S+24,15:GOSUB 39000
- 21120 V=53248:POKEV+16,0:POKEV+23,0:POKEV+29,0:POKEV+39,11:POKEV+40,11:POKEV+41,12:POKEV+42,12
- 21130 POKEV+21,15:POKE2040,11:POKE2041,13:POKE2042,14:POKE2043,15
- 21140 X=-1:X2=23:FOR X1=0 TO 320:X=X+1:X2=X2+1
- 21150 Y=150+70*SIN((null)*X1/115)
- 21160 POKEV,X:POKEV+4,X:POKEV+2,X2:POKEV+6,X2
- 21170 POKEV+1,Y:POKEV+5,Y:POKEV+3,Y:POKEV+7,Y
- 21174 IF X2=255 THEN X2=-1:POKEV+16,10
- 21175 IF X1=255 THEN POKE V+16,15:X=-1
- 21180 IF TI>T THEN GOSUB 39000
- 21190 NEXT:POKEV+21,0:POKE S+4,0
- 21200 RETURN
- 22000 REM *** ***
- 22001 REM *** INITIALIZE VARIABLES ***
- 22002 REM *** ***
- 22010 P=1:G1=.8:G2=.03
- 23000 REM *** ***
- 23001 REM *** DIMENSION ARRAYS ***
- 23002 REM *** ***
- 23010 DIM WS%(40),WC%(40),WX%(40),WY%(40),WI%(40),W2%(40)
- 23020 DIM FS%(100),FD%(100),FC%(100),FT%(100),P%(20)
- 23030 DIM SO(10,20,4)
- 23040 RETURN
- 27000 REM *** ***
- 27001 REM *** INSTRUCTIONS ***
- 27002 REM *** ***
- 27010 PRINT"[147]"SPC(14)PC$(1)"[201]NSTRUCTIONS"
- 27020 PRINTSPC(14)"[192][192][192][192][192][192][192][192][192][192][192][192]"
- 27030 PRINTPC$(3)"[212]HE OBJECT OF THIS GAME IS TO CONTROL"
- 27040 PRINT"MORE PLANETS BY THE END OF THE GAME THAN"
- 27050 PRINT"ANY OF YOUR OPPONENTS. [212]O DO THIS, YOU"
- 27060 PRINT"SEND OUT FLEETS OF SHIPS TO OTHER STARS"
- 27070 PRINT"(EACH OF WHICH HAS 1 HABITABLE, AND"
- 27080 PRINT"PERHAPS OCCUPIED, PLANET). [217]OUR HOME"
- 27090 PRINT"WORLD HAS AN INDUSTRIAL CAPACITY OF 10"
- 27100 PRINT"SHIPS PER YEAR. [212]HE WORLDS YOU ATTACK"
- 27110 PRINT"MAY HAVE INDUSTRIAL CAPACITY AND SHIPS"
- 27120 PRINT"ON DEFENSE."
- 27130 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
- 27140 WAIT 198,1:POKE 198,0
- 27150 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
- 27160 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
- 27170 PRINTPC$(3)"[207]RDERS FOR LAUNCHING FLEETS REQUIRE 3"
- 27180 PRINT"PIECES OF DATA :"
- 27190 PRINTPC$(0)" 1. [208]LANET OF ORIGIN (BY CODE)"
- 27200 PRINT" 2. [196]ESTINATION"
- 27210 PRINT" 3. # OF SHIPS IN FLEET"
- 27220 PRINTPC$(3)"[217]OUR FLEET ORDERS WILL BE INVISIBLE AS"
- 27230 PRINT"YOU ENTER THEM TO PROTECT YOUR SECRECY."
- 27240 PRINT"[208]RESS "PC$(1)"[210]ETURN"PC$(3)" WHEN YOU ARE FINISHED"
- 27250 PRINT"ENTERING ORDERS. [198]OR HELP, TYPE A '?'."
- 27260 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
- 27270 WAIT 198,1:POKE 198,0
- 27280 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
- 27290 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
- 27300 PRINTPC$(3)"[198]LEETS TRAVEL AT A SPEED OF 3 PER YEAR"
- 27310 PRINT"(1 TURN=1 YEAR) AFTER ONE ACCELERATION"
- 27320 PRINT"YEAR IN WHICH THEY MOVE ONLY 2."
- 27330 PRINT"[211]EPARATE FLEETS ATTACK SEPARATELY, EVEN"
- 27340 PRINT"IF THEY ARRIVE AT THE SAME WORLD IN THE"
- 27350 PRINT"SAME YEAR. [207]NCE A FLEET HAS BEEN"
- 27360 PRINT"LAUNCHED, ITS ORDERS CANNOT BE CHANGED."
- 27370 PRINT"[208]LAYERS WILL MOVE IN A RANDOM ORDER EACH"
- 27380 PRINT"TURN."
- 27390 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
- 27400 WAIT 198,1:POKE 198,0
- 27410 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
- 27420 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
- 27430 PRINTPC$(3)"[211]TANDING [207]RDERS ARE SELECTED BY THE '*'"
- 27440 PRINT"KEY. [198]LEET ORIGIN, DEST. AND # OF SHIPS"
- 27450 PRINT" CAN BE [193]DDED, [195]ANCELED, [205]ODIFIED, OR "
- 27460 PRINT"[210]EVIEWED AS NEEDED. [207]RDERS ONCE ENTERED"
- 27470 PRINT"WILL OPERATE UNTIL [195]ANCELED. [194]UILD YOUR"
- 27480 PRINT"FLEET FROM NEARBY WORLDS WITHOUT TYPING!"
- 27490 PRINT"'[194]AD ORDERS' (NOT ENOUGH SHIPS) WON'T"
- 27500 PRINT" LAUNCH. '[210]ETURN' GOES BACK TO MENU."
- 27510 PRINT" [201]T IS POSSIBLE TO SPY AFTER YOUR TURN!"
- 27520 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
- 27530 WAIT 198,1:POKE 198,0
- 27600 PRINT"[147]";SPC(9);PC$(1)"[201]NSTRUCTIONS [195]ONTINUED"
- 27610 PRINTSPC(9);"[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
- 27620 PRINTPC$(3)"[212]O PLAY SOLITAIRE, MAKE THE NUMBER OF"
- 27630 PRINT"YEARS EQUAL TO THE NUMBER OF WORLDS."
- 27640 PRINT"[212]O WIN, YOU MUST CONTROL ALL PLANETS BY"
- 27650 PRINT"THE END OF THE GAME."
- 27660 PRINT" "PC$(2)"[199]OOD [204]UCK !"
- 27670 PRINTPC$(0)" [208]RESS ANY KEY TO CONTINUE."
- 27680 WAIT 198,1:POKE 198,0
- 27690 RETURN
- 28000 REM *** ***
- 28001 REM *** PLAYER INPUT (SETUP) ***
- 28002 REM *** ***
- 28010 PRINTPC$(3)CHR$(14):INPUT"[200]OW MANY PLAYERS (1-10) 2[157][157][157]";PN
- 28020 IF PN<1 OR PN>10 THEN GOSUB 1600:GOTO 28010
- 28030 PN=INT(PN)
- 28040 FOR A=1 TO PN
- 28050 PRINT"[208]LAYER #";A;"IS [215]HO[157][157][157][157][157]";:INPUT PN$(A)
- 28060 IF LEN(PN$(A))>9 THEN PN$(A)=LEFT$(PN$(A),9)
- 28070 NEXT A
- 28080 MN=5:IF PN>5 THEN MN=PN
- 28090 PRINT"[147][200]OW MANY WORLDS ("MN"-40) 10[157][157][157][157]";:INPUT WN
- 28100 IF WN<MN OR WN>40 THEN GOSUB 1600:GOTO 28090
- 28110 WN=INT(WN)
- 28120 PRINT"[200]OW MANY YEARS IN THE GAME (1-100) 1[157][157][157]";:INPUT TNN
- 28130 IF TN<1 OR TN>100 THEN GOSUB 1600:GOTO 28120
- 28140 PRINT"[196]O YOU WANT THE NEUTRAL WORLDS TO BUILD"
- 28150 PRINT"DEFENSIVE SHIPS (Y/N) ?"
- 28160 WAIT 198,1:GET IN$:IF IN$<>"Y" AND IN$<>"N" THEN GOSUB 1600:GOTO 28160
- 28170 AB=0:IF IN$="Y" THEN AB=1
- 28180 PRINT"[208]LEASE WAIT..."
- 28190 RETURN
- 29000 REM *** ***
- 29001 REM *** GENERATE STARS ***
- 29002 REM *** ***
- 29010 WX%(1)=1+INT(RND(0)*20)
- 29020 WY%(1)=1+INT(RND(0)*20)
- 29030 FOR W=2 TO WN
- 29040 WX%(W)=1+INT(RND(0)*20)
- 29050 WY%(W)=1+INT(RND(0)*20)
- 29060 I=1
- 29070 IF WX%(W)=WX%(I) AND WY%(W)=WY%(I) THEN 29040
- 29080 I=I+1:IF I<W THEN 29070
- 29090 NEXT
- 29100 RETURN
- 30000 REM *** ***
- 30001 REM *** SCREEN DISPLAY ***
- 30002 REM *** ***
- 30010 PRINTCHR$(14);PC$(0);"[147][176][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][178][174][176][192][192][192][192][192][192][192][192][178][178][192][192][192][192][192][192][192][192][174]";
- 30020 FORA=1TO18:PRINT"[171][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][219][179][221] [221][221] [221]";:NEXT
- 30030 PRINT"[173][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][177][189][221] [221][221] [221]";
- 30040 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174][221] [221][221] [221]";
- 30045 PRINT"[221] [221][221] [221][221] [221]";
- 30050 PRINT"[221] [221][173][192][192][192][192][192][192][192][192][177][177][192][192][192][192][192][192][192][192][189]";
- 30060 PRINT"[221] [221] [217]EAR :"T
- 30070 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]";
- 30075 PRINTSPC(21)"[215] [208]R [211]HP[215] [208]R [211]HP"
- 30080 FOR W2=1 TO WN
- 30090 PS=40*WY%(W2)+WX%(W2)
- 30100 POKE 983+PS,WL%(W2):POKE 55255+PS,PC%(WC%(W2))
- 30110 PRINTDO$(W2-20*INT(W2/21))SPC(21+10*INT(W2/21))PC$(WC%(W2))WL$(W2)"[151]";
- 30120 IF WC%(W2)<>0 THEN GOSUB 30900
- 30130 NEXT:RETURN
- 30900 S$=MID$(STR$(WI%(W2)),2):S$=LEFT$(" ",3-LEN(S$))+S$:PRINTPC$(0);S$;
- 30910 S$=MID$(STR$(WS%(W2)),2):S$=LEFT$(" ",4-LEN(S$))+S$:PRINTS$;:RETURN
- 30950 REM *** ***
- 30951 REM *** CLEAR BOX ***
- 30952 REM *** ***
- 30960 PRINTD1$" [221]"D2$" [221]"D3$" [221]"
- 30970 RETURN
- 31000 REM *** ***
- 31001 REM *** WORLD INDUSTRY SETUP ***
- 31002 REM *** ***
- 31010 FOR P=1 TO PN:WI%(P)=10:NEXT
- 31020 IF PN=WN THEN RETURN
- 31030 FOR W=PN+1 TO WN
- 31040 IF RND(0)<.25 THEN 31070
- 31050 WI%(W)=WI%(W)+1
- 31060 IF RND(0)<.67 THEN 31050
- 31070 NEXT W
- 31080 RETURN
- 33000 REM *** ***
- 33001 REM *** WORLD CONTROL SETUP ***
- 33002 REM *** ***
- 33010 FOR P=1 TO PN:WC%(P)=P:NEXT:RETURN
- 34000 REM *** ***
- 34001 REM *** WORLD SHIP SETUP ***
- 34002 REM *** ***
- 34005 FC=2+RND(0)
- 34010 FOR P=1 TO PN
- 34020 WS%(P)=12*WN-15*PN
- 34030 FOR I=1 TO PN
- 34040 WS%(P)=WS%(P)+300/(FNDS(I)+6)
- 34050 NEXT I
- 34070 FOR W=PN+1 TO WN
- 34080 WS%(P)=WS%(P)-100/(FNDS(W)+3)
- 34090 NEXT W
- 34100 IF WS%(P)<50 THEN WS%(P)=50
- 34110 W2%(P)=WS%(P)
- 34120 WS%(P)=FC*WS%(P):NEXT P
- 34200 FOR W=PN+1 TO WN
- 34210 WS%(W)=WS%(W)+(WI%(W)+2.2)*RND(0)
- 34220 IF RND(0)<.67 THEN 34210
- 34230 W2%(W)=WS%(W)
- 34240 NEXT W
- 34250 RETURN
- 38999 END
- 39000 REM *** ***
- 39001 REM *** NEXT NOTE IN TUNE ***
- 39002 REM *** ***
- 39010 POKES+4,16:POKES+11,32:READNT,DR
- 39020 T=TI+12*DR:POKES,HF%(NT):POKES+1,LF%(NT)
- 39025 POKES+7,HF%(NT):POKES+8,LF%(NT):POKES+11,33:POKE S+4,17
- 39030 RETURN
- 39997 REM *** ***
- 39998 REM *** COLOURS (#,CHAR) ***
- 39999 REM *** ***
- 40000 DATA 11,"[152]",1,"",2,"",4,"[156]",5,"",6,"",0,"[144]",14,"[154]",7,"[158]",0,"[144]"
- 40010 DATA 16,"[144]"
- 40020 REM *** ***
- 40021 REM *** NOTE VALUES ***
- 40022 REM *** ***
- 40030 DATA 0,0,4,251,5,152,6,71,7,12,7,119,8,97,9,104,9,247,10,143,11,48
- 40040 REM *** ***
- 40041 REM *** RULE BRITANNIA! ***
- 40042 REM *** ***
- 40045 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
- 40046 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,4
- 40050 DATA 2,1,5,2,5,2,5,.5,6,.5,7,.5,8,.5,10,1,5,1,6,3,7,.5,8,.5,7,2,0,1,2,1
- 40060 DATA 5,.5,6,.5,5,.5,6,.5,7,.5,8,.5,7,.5,8,.5,10,1,6,1,7,1,6,1
- 40061 DATA 5,1,6,.5,7,.5,6,1,5,1,4,3,2,1
- 40070 DATA 4,1,2,1,6,1,4,1,10,1,9,.5,7,.5,6,1,5,1,4,2,3,1,2,1,2,2,0,2
- 40080 DATA 5,2,5,1.5,2,.5,3,1,1,1,0,1,5,1,8,1,7,1,6,1,5,1,4,2,0,1,6,1
- 40090 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,2,0,2
- 41000 DATA 7,2,0,1,7,1,8,1,8,1,0,1,7,1,8,1.5,7,.5,6,1,5,1,4,3,0,1
- 41010 DATA 10,2,8,2,7,.5,5,.5,8,.5,6,.5,10,1,8,1,7,2,6,2,5,3,0,100
-